package com.bk.service.impl;
import com.bk.dto.InnovationDTO;
import com.bk.dto.InnovationPageQueryDTO;
import com.bk.entity.Innovation;
import com.bk.mapper.*;
import com.bk.result.PageResult;
import com.bk.service.InnovationService;
import com.bk.vo.InnovationDetailsVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class InnovationServiceImpl implements InnovationService {
  //用户
  @Autowired
  private UserMapper userMapper;
  //帖子
  @Autowired
  private InnovationMapper innovationMapper;
  //点赞
  @Autowired
  private LikeMapper likeMapper;
  //浏览
  @Autowired
  private LookMapper lookMapper;
  //收藏
  @Autowired
  private PreserveMapper preserveMapper;
  //评论
  @Autowired
  private CommentMapper commentMapper;

  /**
   * 发帖
   * @param innovationDTO
   */
  @Override
  public void save(InnovationDTO innovationDTO) {
    //1.将DTO数据复制到Innovation

    //2.获取userid并 补充其他数据

    //3.执行添加
  }

  /**
   * 帖子分页查询
   * @param pageQueryDTO
   * @return
   */
  public PageResult pageQuery(InnovationPageQueryDTO pageQueryDTO) {
    //1.启动分页

    //2.根据查询到的作者id封装作者名称与头像

    //3.查询帖子id相关的点赞，评论，收藏，浏览数

    //4.封装结果(InnovationVO)

    return null;
  }

  /**
   * 查询帖子详细信息
   * @param id
   * @return
   */
  @Override
  public InnovationDetailsVO getByDetailId(Long id) {
    //1.根据id查询帖子的基本信息并封装

    //2.根据查询到的作者id封装作者名称与头像

    //3.查询帖子id相关的点赞，评论，收藏，浏览数

    //4.查询出所有帖子相关的评论并封装

    //5.封装完成，返回
    return null;
  }
  /**
   * 根据id 查询帖子的基本信息回显
   * @param id
   * @return
   */
  @Override
  public Innovation getById(Long id) {
    //1.根据id查询帖子的基本信息并封装

    //2.返回

    return null;
  }

  @Override
  public void update(InnovationDTO innovationDTO) {
    //1.复制数据到Innovation

    //2.补充修改时间

    //3.执行修改
  }

  /**
   * 点赞帖子  返回 0取消点赞   1点赞成功
   * @param innovationId
   * @return
   */

  public Integer like(Long innovationId) {
    //获取用户id

    //根据用户id，帖子id查询是否点赞

    //如果查询结果为空，执行点赞添加数据，并返回1

    //否则执行取消点赞,删除该条记录并返回0
    return null;
  }

  @Override
  public Integer preserve(Long innovationId) {
    //获取用户id

    //根据用户id，帖子id查询是否收藏

    //如果查询结果为空，执行收藏添加数据，并返回1

    //否则执行取消收藏,删除该条记录并返回0
    return null;
  }
}
